Autoboxing এবং Unboxing হল Java-এর সুবিধাজনক বৈশিষ্ট্য যা primitive types এবং wrapper classes এর মধ্যে স্বয়ংক্রিয় রূপান্তরকে সহজ করে তোলে। Java 5 এ Autoboxing এবং Unboxing চালু হয়, এবং এটি কোডের সহজতর এবং পরিস্কার করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।
Primitive এবং Object (Wrapper Class) এর মধ্যে কনভার্ট করা:
- Primitive Types: Java-তে ৮টি primitive data types রয়েছে:
byteshortintlongfloatdoublecharboolean
- Wrapper Classes: Java-এর wrapper classes হল ক্লাসগুলি যা primitive types এর জন্য অবজেক্ট তৈরি করে। এই wrapper classes হল:
Byte,Short,Integer,Long,Float,Double,Character,Boolean
Autoboxing (Primitive to Object):
Autoboxing হল Java-এর একটি প্রক্রিয়া, যেখানে primitive type এর মান স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট wrapper class এর অবজেক্টে রূপান্তরিত হয়। অর্থাৎ, primitive type কে wrapper class-এর অবজেক্টে রূপান্তর করার জন্য আলাদা কোড লেখার প্রয়োজন হয় না, Java এটা নিজেই করে ফেলে।
Example of Autoboxing:
public class AutoboxingExample {
public static void main(String[] args) {
int num = 10;
// Autoboxing: Primitive int to Integer object
Integer numObj = num; // Java does this automatically
System.out.println("Integer object: " + numObj); // Output: Integer object: 10
}
}
এখানে, primitive int ধীরে ধীরে Integer object তে রূপান্তরিত হয়েছে, যা Autoboxing।
Unboxing (Object to Primitive):
Unboxing হল Java-এর একটি প্রক্রিয়া, যেখানে wrapper class এর অবজেক্ট স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট primitive type-এ রূপান্তরিত হয়। এটি Autoboxing এর বিপরীত প্রক্রিয়া।
Example of Unboxing:
public class UnboxingExample {
public static void main(String[] args) {
Integer numObj = new Integer(100);
// Unboxing: Integer object to primitive int
int num = numObj; // Java does this automatically
System.out.println("Primitive int: " + num); // Output: Primitive int: 100
}
}
এখানে, Integer object স্বয়ংক্রিয়ভাবে primitive int এ রূপান্তরিত হয়েছে, যা Unboxing।
Autoboxing এবং Unboxing এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Autoboxing | Unboxing |
|---|---|---|
| কাজ | Primitive type to Wrapper object | Wrapper object to Primitive type |
| প্রক্রিয়া | Primitive value automatically wrapped in an object | Wrapper object automatically unwrapped into primitive |
| যখন হয় | যখন Primitive type কে object হিসেবে প্রয়োজন হয় | যখন Object কে primitive type এ পরিবর্তন করতে হয় |
| Example | int i = 10; Integer obj = i; | Integer obj = 10; int i = obj; |
Autoboxing এবং Unboxing এর সুবিধা:
- সহজ কোড: Autoboxing এবং Unboxing কোড লেখাকে সহজ এবং পরিষ্কার করে তোলে, কারণ developer কে manually object creation বা primitive extraction করতে হয় না।
- কার্যকরী: এই প্রক্রিয়াগুলি Java-এর ইন্টিগ্রেটেড ফিচার, তাই কোড স্বয়ংক্রিয়ভাবে চলতে থাকে।
- কমপ্লেক্সিটি কমানো: পূর্বে primitive types এবং তাদের wrapper class এর মধ্যে কনভার্সন করতে আলাদা কোড লিখতে হত, কিন্তু এখন এটি Java স্বয়ংক্রিয়ভাবে করে দেয়।
Example with Collection (Autoboxing and Unboxing):
Java Collections Framework, যেমন ArrayList এবং অন্যান্য collection types, objects এর সাথে কাজ করে। তাই primitive types যখন collection এ যোগ করতে হয় তখন Autoboxing এবং Unboxing কাজ করে।
Autoboxing in Collection:
import java.util.ArrayList;
public class AutoboxingInCollection {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
// Autoboxing: Primitive int to Integer object
list.add(10); // Java automatically converts int to Integer
System.out.println(list); // Output: [10]
}
}
Unboxing in Collection:
import java.util.ArrayList;
public class UnboxingInCollection {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // Autoboxing: int to Integer
// Unboxing: Integer object to primitive int
int num = list.get(0); // Java automatically converts Integer to int
System.out.println(num); // Output: 10
}
}
Autoboxing এবং Unboxing এর Limitations:
- Performance: Autoboxing এবং Unboxing কার্যকর হলেও কিছু পরিমাণ performance overhead সৃষ্টি করতে পারে। অতিরিক্ত object creation এবং conversion সিস্টেমের কার্যকারিতা কিছুটা কমিয়ে দিতে পারে।
- Null Handling: যখন null মান একটি wrapper class object এর জন্য ব্যবহৃত হয়, তখন NullPointerException সৃষ্টি হতে পারে যদি unboxing করার সময় null value পাওয়া যায়।
Integer num = null;
int value = num; // Throws NullPointerException during unboxing
Autoboxing এবং Unboxing Java-তে primitive types এবং wrapper objects-এর মধ্যে স্বয়ংক্রিয় রূপান্তর করার একটি সুবিধাজনক উপায়। এটি কোডের নমনীয়তা, পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি করে, তবে এগুলি ব্যবহারের সময় performance এবং null handling নিয়ে সতর্ক থাকা দরকার।
Read more